The first parameter to Object.assign() is the same target object that
will be returned. That is, since commit
46874eed0 Params.parse() modifies
the @defaults object. Usually we pass that parameter as an object literal
and this isn't an issue, but the change breaks spectacularly in the few
cases where we use a re-usable variable.
Restore the previous behavior by copying the object first.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/615
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+const Lang = imports.lang;
+
// parse:
// @params: caller-provided parameter object, or %null
// @defaults-provided defaults object
throw new Error(`Unrecognized parameter "${prop}"`);
}
- return Object.assign(defaults, params);
+ let defaultsCopy = {};
+ Lang.copyProperties(defaults, defaultsCopy);
+ return Object.assign(defaultsCopy, params);
}